package LeetCode;

public class Code309_maxProfit {

    public int maxProfit(int[] prices) {
        if (prices == null || prices.length == 0){
            return 0;
        }
        // dp[i][0],dp[i][1]分别表示当天不持有股票或当天持有股票
        int[][] dp = new int[prices.length][2];
        dp[0][0] = 0;
        dp[0][1] = -1 * prices[0];
        for (int i = 1; i < prices.length; i++) {
            dp[i][0] = Math.max(dp[i-1][1] + prices[i],
                    dp[i-1][0]);
            dp[i][1] = Math.max(i-2 >= 0 ? dp[i-2][0] - prices[i] : dp[i-1][0] - prices[i],
                    dp[i-1][1]);
        }
        return dp[prices.length-1][0];
    }
}
